package com.stefanini.pe.bbva.bp.in.dao.impl;

import java.util.HashMap;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.stereotype.Repository;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.stefanini.pe.bbva.bp.in.dao.iface.PerfilamientoDAOIface;
import com.stefanini.pe.bbva.bp.in.to.Perfilamiento;

@Repository
public class PerfilamientoDAOImpl extends SqlMapClientDaoSupport implements PerfilamientoDAOIface {
	
	@Autowired
	public PerfilamientoDAOImpl(SqlMapClient sqlMapClient) {
		setSqlMapClient(sqlMapClient);
	}

	@SuppressWarnings("unchecked")
	public List<Perfilamiento> consultarPerfilamiento(Perfilamiento oPerfilamiento) throws Exception{
		HashMap map = new HashMap();
		map.put("in_cliente", oPerfilamiento.getCodcliente());
		map.put("in_fechadesde", oPerfilamiento.getFechadesde());
		map.put("in_fechahasta", oPerfilamiento.getFechahasta());
		map.put("in_nombreejecutivo", oPerfilamiento.getNombreejecutivo());
		map.put("in_codregistro", oPerfilamiento.getCodRegistro());
		
		System.out.println("SP: IIAF.PIIAF_ASESORIA.sp_cons_as_perfilaclhist, params: "+map);
		getSqlMapClientTemplate().queryForList("BP_Perfilamiento_SqlMap.cons_perfilamiento",map);
		return (List<Perfilamiento>) map.get("result");
	}
	
	@SuppressWarnings("unchecked")
	public List<Perfilamiento> consultarHistoricoPerfilamientoNoCliente(Perfilamiento perfilamiento) throws Exception{
		HashMap map=new HashMap();
		map.put("in_idnocliente", perfilamiento.getIdnocliente());
		map.put("in_fechadesde", perfilamiento.getFechadesde());
		map.put("in_fechahasta", perfilamiento.getFechahasta());
		map.put("in_nombreejecutivo", perfilamiento.getNombreejecutivo());
		
		System.out.println("SP: IIAF.PIIAF_ASESORIA.sp_cons_as_perfilanclhist, params: "+map);
		
		getSqlMapClientTemplate().queryForList("BP_Perfilamiento_SqlMap.cons_perfilamiento_no_cliente",map);
		return (List)map.get("result");
	}
	
	@SuppressWarnings("unchecked")
	public List<HashMap> cambiarEstadoPerfilamiento(String codCliente,String idRebalanceo,String estado,
			String idUsuarioAsesor, String codRegistro) throws Exception{
		HashMap map=new HashMap();
		map.put("in_codcliente", codCliente);
		map.put("in_idrebalanceo", idRebalanceo);
		map.put("in_estado", estado);
		map.put("in_idusuarioasesor", idUsuarioAsesor);
		map.put("in_codregistro", codRegistro);
		
		System.out.println("SP: IIAF.PIIAF_ASESORIA.sp_actu_as_fperfilaclhist, params: "+map);
		getSqlMapClientTemplate().queryForList("BP_Perfilamiento_SqlMap.cambiarEstadoRebalanceo",map);
		
		return (List)map.get("result");
	}
	
	@SuppressWarnings("unchecked")
	public List<HashMap> cambiarEstadoPerfilamientoNoCliente(String codNoCliente, String idPerfilamiento, String estado) throws Exception{
		HashMap map = new HashMap();
		map.put("in_codcliente", codNoCliente);
		map.put("in_idperfilamiento", idPerfilamiento);
		map.put("in_aceptar", estado);
		
		System.out.println("SP: IIAF.PIIAF_ASESORIA.sp_cons_as_fperfilanclhist, params: "+map);
		getSqlMapClientTemplate().queryForList("BP_Perfilamiento_SqlMap.cambiarEstadoRebalanceoNoCliente",map);
		return (List)map.get("result");
	}

	public HashMap listarArchivosPerfilamiento(Perfilamiento perfilamiento) throws Exception{
		HashMap map=new HashMap();
		map.put("in_idperfilamiento", perfilamiento.getIdperfilamiento());
		map.put("in_codregistro", perfilamiento.getIdusuarioasesor());
		
		System.out.println("SP: IIAF.PIIAF_ASESORIA.sp_cons_as_aperfilaclhist, params: "+map);
		getSqlMapClientTemplate().queryForList("BP_Perfilamiento_SqlMap.listarArchivosPerfilamiento",map);
		List listaResult = (List)map.get("result");
		return (HashMap)listaResult.get(0);
	}
	
	public HashMap listarArchivosPerfilamientoNoCliente(Perfilamiento perfilamiento) throws Exception{
		HashMap map=new HashMap();
		map.put("in_idperfilamientonocliente", perfilamiento.getIdperfilamiento());
		
		System.out.println("SP: IIAF.PIIAF_ASESORIA.sp_cons_as_aperfilanclhist, params: "+map);
		
		getSqlMapClientTemplate().queryForList("BP_Perfilamiento_SqlMap.listarArchivosPerfilamientoNoCliente",map);
		List listaResult = (List)map.get("result");		
		return (HashMap)listaResult.get(0);
	}

	public HashMap validarPerfilamiento(String codCliente,String codRegistro) throws Exception{
		HashMap map=new HashMap();
		map.put("in_codcliente", codCliente);
		map.put("in_codregistro", codRegistro);
		
		System.out.println("SP: IIAF.PIIAF_ASESORIA.sp_cons_as_vperfilaclhist, params: "+map);
		getSqlMapClientTemplate().queryForList("BP_Perfilamiento_SqlMap.validarPerfilamiento",map);
		return map;
	}
	
	public HashMap validarPerfilamientoNoCliente(String codNoCliente) throws Exception{
		HashMap map=new HashMap();  
		map.put("in_idnocliente", codNoCliente);
		
		System.out.println("SP: IIAF.PIIAF_ASESORIA.sp_cons_as_vperfilanclhist, params: "+map);
		
		getSqlMapClientTemplate().queryForList("BP_Perfilamiento_SqlMap.validarPerfilamientoNoCliente",map);
		return map;
	}
	
	public List listarPerfilBackTest() throws Exception{
		HashMap map=new HashMap();
		
		System.out.println("SP: IIAF.PIIAF_ASESORIA.sp_cons_pa_perfilbacktest, params: "+map);
		
		getSqlMapClientTemplate().queryForList("BP_Perfilamiento_SqlMap.listarPerfilBackTest",map);
		List listaResult = (List)map.get("result");
		return listaResult;
	}
	
	public void grabarPerfilBackTest(HashMap map) throws Exception{
		
		System.out.println("SP: IIAF.PIIAF_ASESORIA.sp_inser_pa_perfilbacktest, params: "+map);
		
		getSqlMapClientTemplate().queryForList("BP_Perfilamiento_SqlMap.grabarPerfilBackTest",map);
	}
}
